#include"ThreadPool.hpp"
#include"Task.hpp"
#include<memory>
#include<time.h>
#include<stdlib.h>

int main()
{
    srand(time(nullptr));
    EnableConsoleLogStragety();//指定刷新策略
    //智能指针指向线程池然后调用其中的方法
    // std::unique_ptr<ThreadPool<Task>> tp = std::make_unique<ThreadPool<Task>>(5);//创建5个线程

    //创建线程池
    // ThreadPool<Task>::GetInstance()->Start();

    int cnt = 10;
    //将任务放入线程池中
    while(cnt--)
    {
        //创建任务
        int x = rand()%10+1;
        //模拟时间消耗
        usleep(rand()%73);
        int y = rand()%20+1;
        Task t(x,y);

        //将任务入队列
        // tp->Enqueue(t);
        //非静态成员引用必须使用对象来访问，而此处调用GetInstance 就是为了获取单例，所以此函数需为静态成员函数
        ThreadPool<Task>::GetInstance()->Enqueue(t);
        sleep(1);
    }
    // tp->Enqueue();
    // sleep(5);
    ThreadPool<Task>::GetInstance()->Stop();
    ThreadPool<Task>::GetInstance()->Wait();
    return 0;
}